package tech.aistar.corejava.day05.day05work;

/**
 * Created by 豆梦寒 on 2019/7/20.
 */
public class Test01 {
    public static void main(String[] args) {
        //定义一个深度为10的杨辉三角深度
        int deep = 8;
        //定义每个数值的长度，使其对称。
        int length= 8;
        //定义一开始的长度 也就是每行开始的1之间的水平间隔
        String space = " ";
        //循环  长度是数值长度的一半
        for(int i = 0; i <length/2;i++){
            space = space + " ";
        }
        //定义一个二维数组
        int[][] a = new int[deep][];
        //给每一行定义列的数量
        for (int i = 0; i < deep; i++) {
            a[i]  = new int[i+1];
        }
        for (int i = 0; i < deep; i++) {
            // 两边全部设置为1
            a[i][0] = 1;
            a[i][a[i].length - 1] = 1;
        }
        //计算每一行中央位置的数；
        for (int i = 2; i < deep ; i++) {
            for (int j = 1; j < i; j++) {
                a[i][j] = a[i-1][j]+a[i-1][j-1];
            }
        }
        for (int i = 0; i < deep; i++) {
            for (int space_number = 0; space_number < deep - i; space_number++) {
                // 输出每行起始的空格，使得符合三角模型
                System.out.print(space);
            }
            for (int j = 0; j < a[i].length; j++) {
                //打印数值，这个数值是固定长度，所以要先转换成字符串
                String output = a[i][j] + "";
                //将数值转换成字符串，以便求其长度
//                int output_length = output.length();
//                int add_space = (length - output_length) / 2;
//                for (int n = 0; n < add_space; n++) {
//                    //添加空格时，要左右添加，看起来更加美观，所以上面要除以2
//                    output = " "+output + " ";
//                }
                while (output.length() < deep) {
                    // /因为是除以2，所以可能形成的字符串长度要比固定长度短，这里要添加回来，
                    // 否则等行数增多以后，会造成很大的差距
                    output = output + " ";
                }
                System.out.print(output);
            }
            //每一列换行
            System.out.println("");
        }

    }
}
